"""Python 脚本批处理文件生成器

将 Python 脚本封装为可执行的 Windows 批处理文件。

用法:
    python generate_bat.py

交互流程:
    1. 输入要封装的 Python 脚本路径
    2. 输入要生成的批处理文件名称（需包含 .bat 扩展名）
    3. 程序自动生成对应的批处理文件

示例:
    > python generate_bat.py
    请输入要调用的 Python 脚本的路径: D:\scripts\test.py
    请输入要保存的批处理文件的名称（包含 .bat 扩展名）: run_test.bat

生成的批处理文件功能:
    - 自动定位 Python 解释器
    - 自动处理脚本路径
    - 支持参数传递
    - 执行完成后暂停显示结果

注意:
    - 目标 Python 脚本必须存在
    - 批处理文件名必须包含 .bat 扩展名
    - 如果目标批处理文件已存在则不会覆盖
"""

import os


def generate_bat_script(python_script_path, bat_file_name):
    # 获取 Python 脚本所在的目录
    script_dir = os.path.dirname(os.path.abspath(python_script_path))
    # 生成的批处理文件完整路径
    bat_file_path = os.path.join(script_dir, bat_file_name)

    # 检查批处理文件是否已经存在
    if os.path.exists(bat_file_path):
        print(f"警告：指定的批处理文件 {bat_file_path} 已存在，程序退出。")
        return
    # 构建批处理文件的内容
    bat_content = f"""@echo off
rem 确保 Python 环境变量已正确配置
set python_exe=python

rem 获取当前批处理文件所在的目录
set script_dir=%~dp0

rem 构建 Python 脚本的完整路径
set script_path=%script_dir%{os.path.basename(python_script_path)}

rem 运行 Python 脚本并传递参数
%python_exe% "%script_path%"

rem 提示操作完成
echo 脚本执行完毕。
pause
"""

    # 将内容写入批处理文件
    with open(bat_file_path, 'w', encoding='utf-8') as bat_file:
        bat_file.write(bat_content)

    print(f"已生成批处理文件: {bat_file_path}")


if __name__ == "__main__":
    # 提示用户输入 Python 脚本路径
    python_script_path = input("请输入要调用的 Python 脚本的路径: ")

    # 检查指定的 Python 脚本路径是否存在
    if not os.path.exists(python_script_path):
        print(f"指定的 Python 脚本路径 {python_script_path} 不存在，请检查。")
    else:
        # 提示用户输入批处理文件名称
        bat_file_name = input("请输入要保存的批处理文件的名称（包含 .bat 扩展名）: ")
        generate_bat_script(python_script_path, bat_file_name)